#include "bits/stdc++.h"
using namespace std;


/**
 * @brief 给你四个整数数组 nums1、nums2、nums3 和 nums4 ，数组长度都是 n ，请你计算有多少个元组 (i, j, k, l) 能满足：

0 <= i, j, k, l < n
nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0
 * 
 */
class Solution {
public:
    int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {
        
        unordered_map<int, int> mp1;
        unordered_map<int, int> mp2;
        for (int i : nums1) {
            for (int j : nums2) {
                ++mp1[i + j];
            }
        }

        for (int i : nums3) {
            for (int j : nums4) {
                ++mp2[i + j];
            }
        }

        int result = 0;
        for (auto pair : mp1) {
            int val = pair.first;
            int cnt = pair.second;

            if (mp2.count(-val)) {
                result += cnt * mp2[-val];
            }
        }

        return result;
    }
};